package com.ims.core.doc.domain;

import com.ims.common.annotation.Excel;
import com.ims.common.core.domain.BaseEntity;
import com.ims.core.saleconfig.domain.TSalProduct;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;

/**
 * 结算单保存为发票明细项请求对象
 *
 * @author IMS
 * @date 2024-05-30
 */
public class TScSettlebillEntryRequest extends BaseEntity
{
    /** id */
    private Long id;

    /** 开票项ID */
    private String entryId;

    /** 结算单ID */
    private String settleId;

    /** 公司代码 */
    private String custId;

    /** 公司代码 */
    private String siteCode;

    /** 公司 */
    private String siteName;

    /** 单位 */
    private String unit;

    /** 数量 */
    private BigDecimal qty;

    /** 单价(不含税) */
    private BigDecimal withoutPrice;

    /** 金额(不含税) */
    private BigDecimal withoutAmount;

    /** 税率 */
    private BigDecimal taxRate;

    /** 税额 */
    private BigDecimal tax;

    /** 扣除额 */
    private BigDecimal deductAmount;

    /** 折扣率 */
    private BigDecimal deductRate;

    /** 折扣金额(含税) */
    private BigDecimal withoutDiscountAmount;

    /** 折扣金额(不含税) */
    private BigDecimal discountAmount;

    /** 单价(含税) */
    private BigDecimal price;

    /** 金额(含税) */
    private BigDecimal amount;

    /** 优惠政策类型代码 */
    private Long policyCode;

    /** 优惠政策类型 */
    private String policyName;

    /** 免税类型代码 */
    private Long freeTaxType;

    /** 免税类型 */
    private String freeTaxTypeName;

    /** 税收分类编码 */
    private String taxCategoryCode;

    /** 税收分类简称 */
    private String taxShortName;

    /** 货物及服务编码 */
    private String productCode;

    /** 货物及服务名称 */
    private String productName;

    /** 规格型号 */
    private String specificatCode;

    /**
     * 开票产品
     */
    private TSalProduct kpProduct;


    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setEntryId(String entryId)
    {
        this.entryId = entryId;
    }

    public String getEntryId()
    {
        return entryId;
    }
    public void setSettleId(String settleId)
    {
        this.settleId = settleId;
    }

    public String getSettleId()
    {
        return settleId;
    }
    public void setCustId(String custId)
    {
        this.custId = custId;
    }

    public String getCustId()
    {
        return custId;
    }
    public void setSiteCode(String siteCode)
    {
        this.siteCode = siteCode;
    }

    public String getSiteCode()
    {
        return siteCode;
    }
    public void setSiteName(String siteName)
    {
        this.siteName = siteName;
    }

    public String getSiteName()
    {
        return siteName;
    }
    public void setUnit(String unit)
    {
        this.unit = unit;
    }

    public String getUnit()
    {
        return unit;
    }
    public void setQty(BigDecimal qty)
    {
        this.qty = qty;
    }

    public BigDecimal getQty()
    {
        return qty;
    }
    public void setWithoutPrice(BigDecimal withoutPrice)
    {
        this.withoutPrice = withoutPrice;
    }

    public BigDecimal getWithoutPrice()
    {
        return withoutPrice;
    }
    public void setWithoutAmount(BigDecimal withoutAmount)
    {
        this.withoutAmount = withoutAmount;
    }

    public BigDecimal getWithoutAmount()
    {
        return withoutAmount;
    }
    public void setTaxRate(BigDecimal taxRate)
    {
        this.taxRate = taxRate;
    }

    public BigDecimal getTaxRate()
    {
        return taxRate;
    }
    public void setTax(BigDecimal tax)
    {
        this.tax = tax;
    }

    public BigDecimal getTax()
    {
        return tax;
    }
    public void setDeductAmount(BigDecimal deductAmount)
    {
        this.deductAmount = deductAmount;
    }

    public BigDecimal getDeductAmount()
    {
        return deductAmount;
    }
    public void setDeductRate(BigDecimal deductRate)
    {
        this.deductRate = deductRate;
    }

    public BigDecimal getDeductRate()
    {
        return deductRate;
    }
    public void setWithoutDiscountAmount(BigDecimal withoutDiscountAmount)
    {
        this.withoutDiscountAmount = withoutDiscountAmount;
    }

    public BigDecimal getWithoutDiscountAmount()
    {
        return withoutDiscountAmount;
    }
    public void setDiscountAmount(BigDecimal discountAmount)
    {
        this.discountAmount = discountAmount;
    }

    public BigDecimal getDiscountAmount()
    {
        return discountAmount;
    }
    public void setPrice(BigDecimal price)
    {
        this.price = price;
    }

    public BigDecimal getPrice()
    {
        return price;
    }
    public void setAmount(BigDecimal amount)
    {
        this.amount = amount;
    }

    public BigDecimal getAmount()
    {
        return amount;
    }
    public void setPolicyCode(Long policyCode)
    {
        this.policyCode = policyCode;
    }

    public Long getPolicyCode()
    {
        return policyCode;
    }
    public void setPolicyName(String policyName)
    {
        this.policyName = policyName;
    }

    public String getPolicyName()
    {
        return policyName;
    }
    public void setFreeTaxType(Long freeTaxType)
    {
        this.freeTaxType = freeTaxType;
    }

    public Long getFreeTaxType()
    {
        return freeTaxType;
    }
    public void setFreeTaxTypeName(String freeTaxTypeName)
    {
        this.freeTaxTypeName = freeTaxTypeName;
    }

    public String getFreeTaxTypeName()
    {
        return freeTaxTypeName;
    }
    public void setTaxCategoryCode(String taxCategoryCode)
    {
        this.taxCategoryCode = taxCategoryCode;
    }

    public String getTaxCategoryCode()
    {
        return taxCategoryCode;
    }
    public void setTaxShortName(String taxShortName)
    {
        this.taxShortName = taxShortName;
    }

    public String getTaxShortName()
    {
        return taxShortName;
    }
    public void setProductCode(String productCode)
    {
        this.productCode = productCode;
    }

    public String getProductCode()
    {
        return productCode;
    }
    public void setProductName(String productName)
    {
        this.productName = productName;
    }

    public String getProductName()
    {
        return productName;
    }
    public void setSpecificatCode(String specificatCode)
    {
        this.specificatCode = specificatCode;
    }

    public String getSpecificatCode()
    {
        return specificatCode;
    }

    public TSalProduct getKpProduct() {
        return kpProduct;
    }

    public void setKpProduct(TSalProduct kpProduct) {
        this.kpProduct = kpProduct;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("entryId", getEntryId())
                .append("settleId", getSettleId())
                .append("custId", getCustId())
                .append("siteCode", getSiteCode())
                .append("siteName", getSiteName())
                .append("unit", getUnit())
                .append("qty", getQty())
                .append("withoutPrice", getWithoutPrice())
                .append("withoutAmount", getWithoutAmount())
                .append("taxRate", getTaxRate())
                .append("tax", getTax())
                .append("deductAmount", getDeductAmount())
                .append("deductRate", getDeductRate())
                .append("withoutDiscountAmount", getWithoutDiscountAmount())
                .append("discountAmount", getDiscountAmount())
                .append("price", getPrice())
                .append("amount", getAmount())
                .append("policyCode", getPolicyCode())
                .append("policyName", getPolicyName())
                .append("freeTaxType", getFreeTaxType())
                .append("freeTaxTypeName", getFreeTaxTypeName())
                .append("taxCategoryCode", getTaxCategoryCode())
                .append("taxShortName", getTaxShortName())
                .append("productCode", getProductCode())
                .append("productName", getProductName())
                .append("specificatCode", getSpecificatCode())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
